<?php
class HasAttachmentBehavior extends CActiveRecordBehavior
{
    /**
     * Путь до папки, куда будут складываться файлы для модели
     * Должен содержать webroot
     * @var string
     */
    public $path = '';
    /**
     * Свойство модели, в котором хранится путь до файла
     * @var string
     */
    public $filePath = 'url';
    public $file = 'file';
    /**
     * Свойство модели для удаления файла
     * (обычно чекбокс "Удалить изображение" на форме)
     * @var string
     */
    public $delete = 'deleteFile';

    /**
     * Добавление/удаление файла у модели перед ее сохранением
     * @return bool|void
     */
    public function beforeSave()
    {
        if($file = CUploadedFile::getInstance($this->owner, $this->file)){
			$this->deleteFile();
            $this->owner->{$this->filePath} = $this->path . '/' . $file->name;
			$file->saveAs(Yii::getPathOfAlias('webroot') . $this->owner->{$this->filePath});
        }

        if(intval($this->owner->{$this->delete}) > 0)
        {
            $this->deleteFile();
            $this->owner->{$this->filePath} = '';
        }
    }

    /**
     * Удаление модели
     * @return bool|void
     */
    public function beforeDelete()
	{
		$this->deleteFile();
    }

    /**
     * Удаление файла
     */
    public function deleteFile()
	{
        $documentPath = Yii::getPathOfAlias('webroot') . $this->owner->{$this->filePath};
        if(is_file($documentPath))
            unlink($documentPath);
    }

    /**
     * Возвращает относительный путь до файла
     * @return string
     */
    public function getFilePath()
    {
        if(empty($this->owner->{$this->filePath}))
        {
            return '#';
        }
        else
        {
            return $this->owner->{$this->filePath};
        }
    }
	
	public function hasAttachment(){
		return !empty($this->owner->{$this->filePath});
	}
} 